<C++> 您所在的位置:网站首页 windows和windows server区别 <C++>

<C++>

2024-07-10 19:44| 来源: 网络整理| 查看: 265

在平时我们实现上位机和下位机的通讯,很常用的就是基于socket的TCP通讯或者UDP通讯,这里我介绍一下tcp通讯协议。在这里推荐一些socket学习的博客写的挺好的。在这里插入图片描述

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ socket大致的整个创建流程

https://www.cnblogs.com/hgwang/p/6074038.html

socket的原理和实践

https://blog.csdn.net/dlutbrucezhang/article/details/8577810

1. 头文件的区别

linux下的基本头文件(一般这些就够了)

#include #include #include #include #include #include #include #include #include |

windows下的基本头文件

#include #pragma comment(lib,"Ws2_32.lib ")

2. 阻塞的形式(important)

不管是linux还是windows,我们默认创建的套接字都是阻塞的,也就是服务器(server)它会等待客户端(client)的连接信号才会继续执行accept()函数。 但是在windows下我们初始服务器参数时,我们需要有些不同。

sockaddr_in service; service.sin_family = AF_INET; //在这里有区别,服务器是linux选择INADDR_ANY,它还是会阻塞的 //但是如果服务器改成了windows,它会继续直接执行bind(),accept()函数,导致服务器不等待客户端的连接信号 //直接进行下去,导致不能即时通讯 service.sin_addr.s_addr = inet_addr("192.168.1.2"); service.sin_addr.s_addr = htonl(INADDR_ANY); service.sin_port = htons(8888);

3. 套接字的类型

int server_sockfd = socket(AF_INET,SOCK_STREAM, 0); //linux下是int类型 SOCKET server_sockfd = socket(AF_INET,SOCK_STREAM, 0); //windows下是SOCKET类型

4.关闭套接字

close(server_sockfd); //linux cloesesocket(server_sockfd); //windows

5. 初始化

//windows需要初始化,linux则不需要 WORD sockVersion = MAKEWORD(2, 2); WSADATA wsaData; if (::WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)//初始化供进程调用的Winsock相关的dll { cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有